home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / Macintosh Programmer’s Workshop / MPW 3.1 / MPW / Interfaces / CIncludes / Slots.h < prev    next >
Text File  |  1990-12-13  |  7KB  |  186 lines

  1. /************************************************************
  2.  
  3. Created: Thursday, September 7, 1989 at 7:29 PM
  4.     Slots.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.     Copyright Apple Computer, Inc.    1986-1989
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __SLOTS__
  15. #define __SLOTS__
  16.  
  17. #ifndef __TYPES__
  18. #include <Types.h>
  19. #endif
  20.  
  21. #ifndef __OSEVENTS__
  22. #include <OSEvents.h>
  23. #endif
  24.  
  25. #ifndef __OSUTILS__
  26. #include <OSUtils.h>
  27. #endif
  28.  
  29. #ifndef __FILES__
  30. #include <Files.h>
  31. #endif
  32.  
  33. #define fCardIsChanged 1            /*Card is Changed field in StatusFlags field of sInfoArray*/
  34. #define fCkForSame 0                /*For SearchSRT. Flag to check for SAME sResource in the table. */
  35. #define fCkForNext 1                /*For SearchSRT. Flag to check for NEXT sResource in the table. */
  36. #define fWarmStart 2                /*If this bit is set then warm start else cold start.*/
  37. #define stateNil 0                    /*State*/
  38. #define stateSDMInit 1                /*:Slot declaration manager Init*/
  39. #define statePRAMInit 2             /*:sPRAM record init*/
  40. #define statePInit 3                /*:Primary init*/
  41. #define stateSInit 4                /*:Secondary init*/
  42.  
  43. struct SlotIntQElement {
  44.     Ptr sqLink;                     /*ptr to next element*/
  45.     short sqType;                    /*queue type ID for validity*/
  46.     short sqPrio;                    /*priority*/
  47.     ProcPtr sqAddr;                 /*interrupt service routine*/
  48.     long sqParm;                    /*optional A1 parameter*/
  49. };
  50.  
  51. typedef struct SlotIntQElement SlotIntQElement;
  52. typedef SlotIntQElement *SQElemPtr;
  53.  
  54. struct SpBlock {
  55.     long spResult;                    /*FUNCTION Result*/
  56.     Ptr spsPointer;                 /*structure pointer*/
  57.     long spSize;                    /*size of structure*/
  58.     long spOffsetData;                /*offset/data field used by sOffsetData*/
  59.     Ptr spIOFileName;                /*ptr to IOFile name for sDisDrvrName*/
  60.     Ptr spsExecPBlk;                /*pointer to sExec parameter block.*/
  61.     Ptr spStackPtr;                 /*old Stack pointer.*/
  62.     long spMisc;                    /*misc field for SDM.*/
  63.     long spReserved;                /*reserved for future expansion*/
  64.     short spIOReserved;             /*Reserved field of Slot Resource Table*/
  65.     short spRefNum;                 /*RefNum*/
  66.     short spCategory;                /*sType: Category*/
  67.     short spCType;                    /*Type*/
  68.     short spDrvrSW;                 /*DrvrSW*/
  69.     short spDrvrHW;                 /*DrvrHW*/
  70.     char spTBMask;                    /*type bit mask bits 0..3 mask words 0..3*/
  71.     char spSlot;                    /*slot number*/
  72.     char spID;                        /*structure ID*/
  73.     char spExtDev;                    /*ID of the external device*/
  74.     char spHwDev;                    /*Id of the hardware device.*/
  75.     char spByteLanes;                /*bytelanes from card ROM format block*/
  76.     char spFlags;                    /*standard flags*/
  77.     char spKey;                     /*Internal use only*/
  78. };
  79.  
  80. typedef struct SpBlock SpBlock;
  81. typedef SpBlock *SpBlockPtr;
  82.  
  83. struct SInfoRecord {
  84.     Ptr siDirPtr;                    /*Pointer to directory*/
  85.     short siInitStatusA;            /*initialization E*/
  86.     short siInitStatusV;            /*status returned by vendor init code*/
  87.     char siState;                    /*initialization state*/
  88.     char siCPUByteLanes;            /*0=[d0..d7] 1=[d8..d15]*/
  89.     char siTopOfROM;                /*Top of ROM= $FssFFFFx: x is TopOfROM*/
  90.     char siStatusFlags;             /*bit 0 - card is changed*/
  91.     short siTOConst;                /*Time Out C for BusErr*/
  92.     char siReserved[2];             /*reserved*/
  93. };
  94.  
  95. typedef struct SInfoRecord SInfoRecord;
  96. typedef SInfoRecord *SInfoRecPtr;
  97.  
  98. struct SDMRecord {
  99.     ProcPtr sdBEVSave;                /*Save old BusErr vector*/
  100.     ProcPtr sdBusErrProc;            /*Go here to determine if it is a BusErr*/
  101.     ProcPtr sdErrorEntry;            /*Go here if BusErrProc finds real BusErr*/
  102.     long sdReserved;                /*Reserved*/
  103. };
  104.  
  105. typedef struct SDMRecord SDMRecord;
  106. struct FHeaderRec {
  107.     long fhDirOffset;                /*offset to directory*/
  108.     long fhLength;                    /*length of ROM*/
  109.     long fhCRC;                     /*CRC*/
  110.     char fhROMRev;                    /*revision of ROM*/
  111.     char fhFormat;                    /*format - 2*/
  112.     long fhTstPat;                    /*test pattern*/
  113.     char fhReserved;                /*reserved*/
  114.     char fhByteLanes;                /*ByteLanes*/
  115. };
  116.  
  117. typedef struct FHeaderRec FHeaderRec;
  118. typedef FHeaderRec *FHeaderRecPtr;
  119.  
  120. struct SEBlock {
  121.     unsigned char seSlot;            /*Slot number.*/
  122.     unsigned char sesRsrcId;        /*sResource Id.*/
  123.     short seStatus;                 /*Status of code executed by sExec.*/
  124.     unsigned char seFlags;            /*Flags*/
  125.     unsigned char seFiller0;        /*Filler, must be SignedByte to align on odd boundry*/
  126.     unsigned char seFiller1;        /*Filler*/
  127.     unsigned char seFiller2;        /*Filler*/
  128.     long seResult;                    /*Result of sLoad.*/
  129.     long seIOFileName;                /*Pointer to IOFile name.*/
  130.     unsigned char seDevice;         /*Which device to read from.*/
  131.     unsigned char sePartition;        /*The partition.*/
  132.     unsigned char seOSType;         /*Type of OS.*/
  133.     unsigned char seReserved;        /*Reserved field.*/
  134.     unsigned char seRefNum;         /*RefNum of the driver.*/
  135.     unsigned char seNumDevices;     /* Number of devices to load.*/
  136.     unsigned char seBootState;        /*State of StartBoot code.*/
  137. };
  138.  
  139. typedef struct SEBlock SEBlock;
  140. #ifdef __cplusplus
  141. extern "C" {
  142. #endif
  143. pascal OSErr SIntInstall(SQElemPtr sIntQElemPtr,short theSlot); 
  144. pascal OSErr SIntRemove(SQElemPtr sIntQElemPtr,short theSlot);
  145. pascal OSErr SReadByte(SpBlockPtr spBlkPtr);
  146. pascal OSErr SReadWord(SpBlockPtr spBlkPtr);
  147. pascal OSErr SReadLong(SpBlockPtr spBlkPtr);
  148. pascal OSErr SGetCString(SpBlockPtr spBlkPtr);
  149. pascal OSErr SGetBlock(SpBlockPtr spBlkPtr);
  150. pascal OSErr SFindStruct(SpBlockPtr spBlkPtr);
  151. pascal OSErr SReadStruct(SpBlockPtr spBlkPtr);
  152. pascal OSErr SReadInfo(SpBlockPtr spBlkPtr);
  153. pascal OSErr SReadPRAMRec(SpBlockPtr spBlkPtr); 
  154. pascal OSErr SPutPRAMRec(SpBlockPtr spBlkPtr);
  155. pascal OSErr SReadFHeader(SpBlockPtr spBlkPtr); 
  156. pascal OSErr SNextSRsrc(SpBlockPtr spBlkPtr);
  157. pascal OSErr SNextTypeSRsrc(SpBlockPtr spBlkPtr);
  158. pascal OSErr SRsrcInfo(SpBlockPtr spBlkPtr);
  159. pascal OSErr SCkCardStat(SpBlockPtr spBlkPtr);
  160. pascal OSErr SReadDrvrName(SpBlockPtr spBlkPtr);
  161. pascal OSErr SFindDevBase(SpBlockPtr spBlkPtr); 
  162. pascal OSErr SFindBigDevBase(SpBlockPtr spBlkPtr);
  163. pascal OSErr InitSDeclMgr(SpBlockPtr spBlkPtr); 
  164. pascal OSErr SPrimaryInit(SpBlockPtr spBlkPtr); 
  165. pascal OSErr SCardChanged(SpBlockPtr spBlkPtr); 
  166. pascal OSErr SExec(SpBlockPtr spBlkPtr);
  167. pascal OSErr SOffsetData(SpBlockPtr spBlkPtr);
  168. pascal OSErr SInitPRAMRecs(SpBlockPtr spBlkPtr);
  169. pascal OSErr SReadPBSize(SpBlockPtr spBlkPtr);
  170. pascal OSErr SCalcStep(SpBlockPtr spBlkPtr);
  171. pascal OSErr SInitSRsrcTable(SpBlockPtr spBlkPtr);
  172. pascal OSErr SSearchSRT(SpBlockPtr spBlkPtr);
  173. pascal OSErr SUpdateSRT(SpBlockPtr spBlkPtr);
  174. pascal OSErr SCalcSPointer(SpBlockPtr spBlkPtr);
  175. pascal OSErr SGetDriver(SpBlockPtr spBlkPtr);
  176. pascal OSErr SPtrToSlot(SpBlockPtr spBlkPtr);
  177. pascal OSErr SFindSInfoRecPtr(SpBlockPtr spBlkPtr); 
  178. pascal OSErr SFindSRsrcPtr(SpBlockPtr spBlkPtr);
  179. pascal OSErr SDeleteSRTRec(SpBlockPtr spBlkPtr);
  180. pascal OSErr OpenSlot(ParmBlkPtr paramBlock,Boolean aSync); 
  181. #ifdef __cplusplus
  182. }
  183. #endif
  184.  
  185. #endif
  186.